/*
 * NavimeshRenderer.h
 *
 *  Created on: 15/08/2012
 *      Author: Marcos
 */

#ifndef NAVIMESHRENDERER_H_
#define NAVIMESHRENDERER_H_

#include <list>

#include "navimesh.hpp"
#include "NavinodeRenderable.h"

class NavimeshRenderer : public Navimesh
{
public: /// Methods
	NavimeshRenderer(Triangulation* triangulation);
	virtual ~NavimeshRenderer();

	/// Methods called while building the navimesh
	/// These 4 methods should be overriden if you want to use a custom Navinode
	NaviNode* CreateNode(Face* face);
	void 	  RemoveNode(NaviNode* node);
	void OnSplit(NaviNode* nToSplit, NaviNode* n1, NaviNode* n2, NaviNode* n3);
	void OnJoin (NaviNode* n1, NaviNode* n2, NaviNode* nJoined);
	void OnFlip (NaviNode* n1, NaviNode* n2);
};

#endif /* NAVIMESHRENDERER_H_ */
